home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModelessButtons.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  6.3 KB  |  237 lines  |  [TEXT/CWIE]

  1. /* ModelessButtons.c -- modeless dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModelessButtons.h"
  20.  
  21. #define kCapInvisibleLabel        1
  22. #define kInvisibleButton        2
  23. #define kStandardButton        3
  24. #define kDefaultButton        4
  25. #define kBevelBox        5
  26. #define kButtonButton        6
  27. #define kNextButton        7
  28. #define kNext2Button        8
  29. #define kGraphicBox        9
  30. #define kCapcicnLabel        10
  31. #define kRightButton        11
  32. #define kCapicl8Label        12
  33. #define kLightButton        13
  34. #define kCapICNLabel        14
  35. #define kRight2Button        15
  36. #define kCapicl9Label        16
  37. #define kButton2Button        17
  38. #define kRight3Button        18
  39. #define kCapPICTLabel        19
  40. #define kRect3DButton        20
  41. #define kLeftIconButton        21
  42. #define kRightIconButton        22
  43. #define kTitledPICTButton        23
  44.  
  45.  
  46. //----------
  47. DialogPtr        ModelessButtonsDialog = nil;
  48.  
  49. //----------
  50. void    ModelessButtons_Create ()
  51. {
  52.     ModelessButtons*            dialog = NewModelessButtons ();
  53.  
  54.     AMDialog_MakeDialog ((AMDialog*)dialog, DLOG_ModelessButtons);
  55. }
  56.  
  57. //----------
  58. void    ModelessButtons_Show ()
  59. {
  60.     if (ModelessButtonsDialog == nil) {
  61.         ModelessButtons_Create ();
  62.     }
  63.     if (ModelessButtonsDialog != nil) {
  64.         SelectWindow (ModelessButtonsDialog);
  65.         ShowWindow (ModelessButtonsDialog);
  66.     }
  67. }
  68.  
  69. //----------
  70. void    ModelessButtons_Close ()
  71. {
  72.     HideWindow (ModelessButtonsDialog);
  73. }
  74.  
  75. //----------
  76. ModelessButtons*        NewModelessButtons ()
  77. {
  78.     ModelessButtons*        dialog;
  79.  
  80.     dialog = (ModelessButtons*)malloc (sizeof (ModelessButtons));
  81.     ModelessButtons_Init (dialog);
  82.     SetClassID (dialog, classModelessButtons);
  83.  
  84.     return dialog;
  85. }
  86.  
  87. //----------
  88. void    DeleteModelessButtons (
  89.     ModelessButtons*        dialog)
  90. {
  91.     ModelessButtons_Free (dialog);
  92.     free (dialog);
  93. }
  94.  
  95. //----------
  96. void    ModelessButtons_Init (
  97.     ModelessButtons*        self)
  98. {
  99.     AMDialog_Init ((AMDialog*)self);
  100. }
  101.  
  102. //----------
  103. void    ModelessButtons_Free (
  104.     ModelessButtons*        self)
  105. {
  106.     AMDialog_Free ((AMDialog*)self);
  107. }
  108.  
  109. //----------
  110. void    ModelessButtons_FinishMake (
  111.     ModelessButtons*        self)
  112. {
  113.     ModelessButtonsDialog = ((AMDialog*)self)->mDialog;
  114.  
  115.     self->mInvisibleHandle = AMDialog_GetControlItem ((AMDialog*)self, kInvisibleButton);
  116.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardButton);
  117.     self->mDefaultHandle = AMDialog_GetControlItem ((AMDialog*)self, kDefaultButton);
  118.     SetDefaultState (self->mDefaultHandle, true);
  119.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kDefaultButton);
  120.     self->mBevelHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  121.     self->mButtonHandle = AMDialog_GetControlItem ((AMDialog*)self, kButtonButton);
  122.     SetBevelButtonGraphicAlignment (self->mButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  123.     self->mNextHandle = AMDialog_GetControlItem ((AMDialog*)self, kNextButton);
  124.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  125.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  126.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  127.     self->mNext2Handle = AMDialog_GetControlItem ((AMDialog*)self, kNext2Button);
  128.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  129.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  130.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  131.     self->mGraphicHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  132.     self->mRightHandle = AMDialog_GetControlItem ((AMDialog*)self, kRightButton);
  133.     self->mLightHandle = AMDialog_GetControlItem ((AMDialog*)self, kLightButton);
  134.     self->mRight2Handle = AMDialog_GetControlItem ((AMDialog*)self, kRight2Button);
  135.     self->mButton2Handle = AMDialog_GetControlItem ((AMDialog*)self, kButton2Button);
  136.     self->mRight3Handle = AMDialog_GetControlItem ((AMDialog*)self, kRight3Button);
  137.     self->mRect3DHandle = AMDialog_GetControlItem ((AMDialog*)self, kRect3DButton);
  138.     self->mLeftIconHandle = AMDialog_GetControlItem ((AMDialog*)self, kLeftIconButton);
  139.     self->mRightIconHandle = AMDialog_GetControlItem ((AMDialog*)self, kRightIconButton);
  140.     self->mTitledPICTHandle = AMDialog_GetControlItem ((AMDialog*)self, kTitledPICTButton);
  141. }
  142.  
  143. //----------
  144. void    ModelessButtons_ConnectToData (
  145.     ModelessButtons*        self,
  146.     AMSignaler*        inData)
  147. {
  148.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  149.  
  150. }
  151.  
  152. //----------
  153. void    ModelessButtons_DoItem (
  154.     ModelessButtons*        self,
  155.     SInt16        inItemHit)
  156. {
  157.     switch (inItemHit) {
  158.     case kInvisibleButton:
  159.             //? this button doesn't have a command
  160.             // DoInvisibleButton ();
  161.         break;
  162.     case kStandardButton:
  163.             //? this button doesn't have a command
  164.             // DoStandardButton ();
  165.         break;
  166.     case kDefaultButton:
  167.             //? this button doesn't have a command
  168.             // DoDefaultButton ();
  169.         break;
  170.     case kButtonButton:
  171.             //? this button doesn't have a command
  172.             // DoButtonButton ();
  173.         break;
  174.     case kNextButton:
  175.             //? this button doesn't have a command
  176.             // DoNextButton ();
  177.         break;
  178.     case kNext2Button:
  179.             //? this button doesn't have a command
  180.             // DoNext2Button ();
  181.         break;
  182.     case kRightButton:
  183.             //? this button doesn't have a command
  184.             // DoRightButton ();
  185.         break;
  186.     case kLightButton:
  187.             //? this button doesn't have a command
  188.             // DoLightButton ();
  189.         break;
  190.     case kRight2Button:
  191.             //? this button doesn't have a command
  192.             // DoRight2Button ();
  193.         break;
  194.     case kButton2Button:
  195.             //? this button doesn't have a command
  196.             // DoButton2Button ();
  197.         break;
  198.     case kRight3Button:
  199.             //? this button doesn't have a command
  200.             // DoRight3Button ();
  201.         break;
  202.     case kRect3DButton:
  203.             //? this button doesn't have a command
  204.             // DoRect3DButton ();
  205.         break;
  206.     case kLeftIconButton:
  207.             //? this button doesn't have a command
  208.             // DoLeftIconButton ();
  209.         break;
  210.     case kRightIconButton:
  211.             //? this button doesn't have a command
  212.             // DoRightIconButton ();
  213.         break;
  214.     case kTitledPICTButton:
  215.             //? this button doesn't have a command
  216.             // DoTitledPICTButton ();
  217.         break;
  218.  
  219.     } // switch
  220. }
  221.  
  222. //----------
  223. void    ModelessButtons_DataChanged (
  224.     ModelessButtons*        self,
  225.     long        inDataID)
  226. {
  227. }
  228.  
  229. //----------
  230. Boolean        ModelessButtons_Filter (
  231.     ModelessButtons*            self,
  232.     EventRecord            *ioEvent,
  233.     DialogItemIndex        *outItemHit)
  234. {
  235.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  236. }
  237.